package algorithm.easy;

public class Solution125 {

    //给定一个字符串，验证它是否是回文串，只考虑字母和数字字符，可以忽略字母的大小写。
    // 说明：本题中，我们将空字符串定义为有效的回文串。
    //输入: "A man, a plan, a canal: Panama"
    //输出: true
    //解释："amanaplanacanalpanama" 是回文串
    public static boolean isPalindrome(String s) {
        if(s==null||"".equals(s)){
            return true;
        }
        String str = s.toLowerCase();//.replace(" ","");
        char[] chr = str.toCharArray();
        //ASCII 字母:97-122 ,数字：30-39
        for(int i=0,j=chr.length-1;i<chr.length && j>=0;){
            int inti = (int)chr[i];
            int intj = (int)chr[j];
            if( ((inti >=97 && inti<=122)|| (inti>= 48 && inti <= 57) )
                && ((intj >=97 && intj <=122)|| (intj  >= 48 && intj  <= 57))){
                if( inti  != intj ){
                    System.out.println("i="+i+",j="+j+"**"+inti+"->"+intj);
                    return false;
                }else{
                    i++;
                    j--;
                }
            }
            if( !((inti >=97 && inti<=122)|| (inti>= 48 &&inti <= 57))
                    && ((intj >=97 && intj <=122)|| (intj  >= 48 && intj  <= 57))){
                System.out.println(inti+"-->"+intj);
                i++;
            }
            if(((inti >=97 && inti<=122)|| (inti>= 48 &&inti <= 57))
                    && !((intj >=97 && intj <=122)|| (intj  >= 48 && intj  <= 48))){
                System.out.println(inti+"--->"+intj);
                j--;
            }
            if(i==j){
                return true;
            }
        }
        return false;
    }

    public static void main(String[] args){
        String s =  "A man, a plan, a canal: Panama";
        System.out.println(isPalindrome(s));
    }
}
